// 仓库模块
var express = require('express');
var router = express.Router();   //路由分包
// const moment = require('moment'); // 时间格式化

//数据库配置

// 引入模型
const testmode = require('../models/testmode'); //测试模型
const MachineInfo = require('../config/mongoose');  //模型
const Repair = require('../models/repairSchema');
const Business = require('../models/businessSchema');


/*   api接口  */

//添加的信息表单
router.post('/create', function (req, res, next) {   //保存提交的信息表单
  console.log("提交的表单数据：" + JSON.stringify(req.body));
  // 在 Repair.create 的 .then 和 .catch 块中，只调用一次 res.json，确保只发送一次响应。
  Repair.create({  //调用模型执行语句
    ...req.body
  }).then((data) => {
    console.log('插入成功:', data);
    res.json({
      code: 200,
      msg: '添加成功',
      data: data
    })

    // 机器信息表插入数据成功后，获取到数据的id号码和业务的姓名，同步把数据更新业务数据表中
    Business.create({
      username: data.agent, // 业务员姓名
      machineId: data._id, // 机器ID
      status: '未处理', // 默认状态为 '未处理'
      solution: data.solution || '', // 可选字段
      repairDestination: data.repairDestination || '', // 可选字段
      createdAt: new Date(), // 创建时间
      repair: [data._id] // 初始化 repair 数组
    })
      .then((newData) => {
        console.log(`新创建业务数据成功: 业务员=${newData.username}, 机器ID=${newData.machineId}`, newData);
      })
      .catch((err) => {
        console.error('Error creating business:', err);
      });

  })
    .catch((data) => {
      // console.error('Error updating document:', err);
      res.status(500).json({
        code: 500,
        msg: '添加成功',
        data: data
      })
    })

})

//查询数据 ---查询全部
router.get('/find', function (req, res, next) {
  Repair.find().then((data) => {
    console.log('查询成功:', data);
    res.status(200).json({
      code: 200,
      msg: '查询成功',
      data: data
    })
  })
    .catch((data) => {
      res.status(500).json({
        code: 500,
        msg: '添加成功',
        data: data
      })
    })
    ;
});
//查询数据 ---依据用户名或者手机进行查询
router.get('/findByInfo', function (req, res, next) {
  const { username, phone } = req.query;
  let query = {};

  if (phone) {
    query.phone = phone; // 精确匹配手机号
  } else if (username) {
    query.username = { $regex: username, $options: 'i' }; // 模糊匹配用户名
  }
  // 执行查询
  Repair.find(query).then((data) => {
    console.log('查询成功:', data);
    res.status(200).json({
      code: 200,
      msg: '查询成功',
      data: data
    })
  })
    .catch((data) => {
      res.status(500).json({
        code: 500,
        msg: '添加成功',
        data: data
      })
    })
    ;
});

// 修改数据
router.put('/update', function (req, res, next) {
  if (!req.body._id) { // 校验 req.body 是否包含 _id
    return res.status(400).json({
      code: 400,
      msg: '缺少 _id 参数',
      data: null
    });
  }
  Repair.updateOne({ _id: req.body._id }, { $set: req.body })
    .then((data) => {
      if (data.nModified === 0) {
        // 如果没有修改任何文档，返回提示信息
        return res.status(404).json({
          code: 404,
          msg: '未找到需要更新的文档',
          data: null
        });
      }
      console.log('更新成功:', data);
      res.json({
        code: 200,
        msg: '更新成功',
        data: data
      });
    })
    .catch((err) => {
      console.error('Error updating document:', err); // 记录错误日志
      if (err.name === 'ValidationError') { // 模型验证错误
        res.status(400).json({
          code: 400,
          msg: '数据验证失败',
          data: err.errors
        });
      } else { // 其他错误
        res.status(500).json({
          code: 500,
          msg: '服务器内部错误',
          data: err.message
        });
      }
    });
});

// 
router.post('/test', function (req, res, next) {

  testmode.create({
    ...req.body
  }).then((data) => {
    console.log('读取成功:', data);
    res.json({
      code: 200,
      msg: '添加成功',
      data: data
    })
  })
    .catch((err) => {
      // console.error('Error updating document:', err);
      res.json({
        code: 404,
        msg: '添加失败',
        data: err
      })
    });
})

router.post('/test2', function (req, res, next) {
  MachineInfo.create({
    ...req.body
  }).then((data) => {
    console.log('读取成功:', data);
    res.json({
      code: 200,
      msg: '添加成功',
      data: data
    })
  })
    .catch((err) => {
      // console.error('Error updating document:', err);
      // res.json({
      //   code: 404,
      //   msg: '添加失败',
      //   data: err
      // })
      if (err.name === 'ValidationError') { // 模型验证错误
        res.status(400).json({
          code: 400,
          msg: '数据验证失败',
          data: err.errors
        });
      } else { // 其他错误
        console.error('Error creating document:', err);
        res.status(500).json({
          code: 500,
          msg: '服务器内部错误',
          data: err.message
        });
      }
    });
})


module.exports = router;